package com.guochen.debt.mapper;

import com.guochen.debt.pojo.Debt;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.List;

/**
 * @author Guo Chen
 * @date 2022年04月19日 22:46
 */
public interface DebtMapper {
    /**
     * 获取全部债务记录
     * @author Guo Chen
     * @date 2022/4/19 22:54
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getAllDebt();

    /**
     * 根据id获取债务记录
     * @author Guo Chen
     * @date 2022/4/19 22:56
     * @param id
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getDebtByDebtId(@Param("id") Integer id);

    /**
     * 新增债务记录
     * @author Guo Chen
     * @date 2022/4/20 22:51
     * @param debt
     * @return java.lang.Integer
     */
    Integer insertDebt(Debt debt);

    /**
     * 根据id删除债务记录
     * @author Guo Chen
     * @date 2022/4/20 22:52
     * @param id
     * @return java.lang.Integer
     */
    Integer deleteDebtById(@Param("id") Integer id);


    /**
     * 更新债务信息
     * @author Guo Chen
     * @date 2022/4/20 23:51
     * @param debt
     * @return java.lang.Integer
     */
    Integer updateDebt(Debt debt);

    /**
     * 按合同名称查询
     * @author Guo Chen
     * @date 2022/4/25 13:56
     * @param contractName
     * @return com.guochen.debt.pojo.Debt
     */
    Debt getDebtByContractName(@Param("contractName") String contractName);

    /**
     * 根据起贷日期查询，一定区间内
     * @author Guo Chen
     * @date 2022/4/25 14:23
     * @param startTime
     * @param endTime 
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getDebtByStartTime(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 根据终贷日期查询，一定区间内
     * @author Guo Chen
     * @date 2022/4/25 14:29
     * @param startTime
     * @param endTime
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getDebtByEndTime(@Param("startTime") String startTime, @Param("endTime") String endTime);

    /**
     * 根据合同金额查询，一定区间内
     * @author Guo Chen
     * @date 2022/4/25 14:48
     * @param min
     * @param max
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getDebtByAmountWithinARange(@Param("min") double min,@Param("max") double max);

    /**
     * 根据债权单位查询
     * @author Guo Chen
     * @date 2022/4/25 14:51
     * @param bondInstitutionName
     * @return java.util.List<com.guochen.debt.pojo.Debt>
     */
    List<Debt> getDebtByBondInstitutionName(@Param("bondInstitutionName") String bondInstitutionName);
}
